package dataBase;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

import properties.DBProperties;
import clases.Blog;
import clases.Padre;
import clases.Usuario;

import com.mysql.jdbc.Connection;


public class Conectar {
	
	private Connection con;
	private Statement st;
	
	public Conectar(){
		
		String user=DBProperties.USER; //Vuestro usuario para la base de datos. Cambiadlo a vuestra necesidad
		String pass=DBProperties.PASSWORD; //Idem
		String ip=DBProperties.LOCALHOST; //"127.0.0.1" en caso de que trabajéis local o "phobosdbm.no-ip.org" si trabajáis en mi servidor (puede que no siempre esté disponible)
		
		try {
			Class.forName("com.mysql.jdbc.Driver");
			con=(Connection) DriverManager.getConnection("jdbc:mysql://"+ip+"/guarderia", user, pass);
			if(con!=null)
				System.out.println("Conexion a BD establecida");
			st = con.createStatement();
		}catch(ClassNotFoundException e) {
			System.out.println("No se ha podido encontrar el Driver");
		} 
		catch(SQLException ex) {
			System.out.println("Error de mysql");
		}
	}
	
	public Usuario getUsuario(String user, String pass){
		
		Usuario usuario_tmp=new Usuario();
		ResultSet rs;
		String dni="invitado";
		int categoria=5;//categoria por defecto de invitado
		
		try {//devuelve categoria, dni
			rs=st.executeQuery("select idcategoria, dni from personas where usuario like '"+user+"' and password like '"+pass+"';");
			
			while(rs.next()){
				categoria=rs.getInt("idcategoria");
				dni=rs.getString("dni");
			}
			usuario_tmp.setCategoria(categoria);
			usuario_tmp.setDni(dni);
			usuario_tmp.setNombre(user);
			usuario_tmp.setPass(pass);
			
			System.out.println(categoria+" "+dni);
			rs.close();
			con.close();
		} catch (SQLException e) {
			
			e.printStackTrace();
			e.getMessage();
			e.toString();
		}
		return usuario_tmp;
		
	}
	
	
	public boolean existeUsuario(String user){
		ResultSet rs;
		boolean ok = false;
		try {
			String sql = "SELECT usuario FROM personas WHERE usuario LIKE '"+ user + "';";
			System.out.println(sql);
			rs = st.executeQuery(sql);
			
			if(rs.next()){
				ok = true;
			}
			
			con.close();
		} catch (SQLException e) {
			System.out.println(e.getMessage());
		}
		return ok;
	}

	public boolean tieneHijoRegistrado(String dni){
		boolean ok = false;
		ResultSet rs; 
		
		String sql = "SELECT * FROM alumno_padre WHERE dniPadre LIKE '" + dni + "';";
		try {
			rs = st.executeQuery(sql);
			if(rs.next()){
				ok = true;
			}
		con.close();
		} catch (SQLException e) {
			System.out.println(e.getMessage());
		}
		return ok;
	}

	public void crearUsuarioBBDD(Padre user){
		String sql = "INSERT INTO PERSONAS VALUES ('"+user.getDni()+"',3,'" + user.getUsuario()+"','"+user.getPass()+"');";
		try {
			st.executeUpdate(sql);
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
	}
public List<Blog> getBlog(){
		
		List<Blog> entradas=new LinkedList<Blog>();
		ResultSet rs;
		String titulo,cuerpo,fecha;
		try {
			rs=st.executeQuery("select titulo, fecha, dniAutor, cuerpo from blog order by idEntrada desc");
			while(rs.next()){
				titulo=rs.getString("titulo");
				cuerpo=rs.getString("cuerpo");
				fecha=rs.getString("fecha");
				entradas.add(new Blog(titulo,cuerpo,fecha));
			}
		} catch (SQLException e) {
			System.err.println("Problema obteniendo entradas");
			System.err.println(e);
			//e.printStackTrace();
		}
		
		return entradas;	
	}
	
	public boolean insertEntrada(String titulo, String cuerpo, String dni){
		
		boolean ok=false;
		try {
			Date date=new Date();
			String fecha=date.getDay()+"/"+date.getMonth()+"/"+(date.getYear()+1900);
			st.executeUpdate("insert into blog values (0, '"+titulo+"', '"+fecha+"', '"+dni+"', '"+cuerpo+"');");
			ok=true;
		} catch (SQLException e) {
			System.err.println("Problema insertando entrada en la base de datos");
			System.err.println(e);
		}

		return ok;
	}
}
